package pe.gov.mtc.dgac.licencias.persistence;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;
import pe.gov.mtc.dgac.licencias.bean.AuditoriaProcedimientoTO;
import pe.gov.mtc.dgac.licencias.bean.ProcedimientoTO;
import pe.gov.mtc.dgac.licencias.exception.TransactionException;
import pe.gov.mtc.dgac.licencias.util.Utiles;

/**
 *
 * @author elvis
 */
@Repository
public class ProcedimientoImplDAO extends HibernateDaoSupport implements ProcedimientoDAO {

    private final static Logger logger = Logger.getLogger(ProcedimientoImplDAO.class);
    
    @Autowired
    public ProcedimientoImplDAO(SessionFactory sessionFactory){
         setHibernateTemplate( new HibernateTemplate(sessionFactory));
    }
    
    @Override
    public void insertarProcedimiento(ProcedimientoTO procedimientoTO) throws TransactionException {
         //insert("Procedimiento.insertProcedimiento", procedimientoTO);
         this.getHibernateTemplate().saveOrUpdate(procedimientoTO);
    }

    @Override
    public List<ProcedimientoTO> listarProdedimientos(ProcedimientoTO procedimientoTO) throws TransactionException {
      /*logger.debug("listarProcesos DAO");
      List<ProcedimientoTO> list=null;
      try{
          Map<String, Object> parmMap = new HashMap<String, Object>();
          parmMap.put("pCodProcedimiento", -1);
          parmMap.put("pPropNumProcedimientoceso", procedimientoTO.getCodProceso().getCodProceso() );
          parmMap.put("pNumProcedimiento", procedimientoTO.getNumProcedimiento() );
          queryForObject("Procedimiento.listarProcedimientos", parmMap);
          list=(List<ProcedimientoTO>)parmMap.get("pResult");
          logger.debug("elem = " + list.size());
      }catch(Exception e){
        e.printStackTrace();
	logger.error(e);
      }
       return list;*/
        DetachedCriteria criteria = DetachedCriteria.forClass(ProcedimientoTO.class);
        logger.debug("listarHallazgos()");
        if( !Utiles.nullToBlank( procedimientoTO.getCodProceso() ).equals("")){
             criteria.add( Restrictions.eq("codProceso.codProceso", procedimientoTO.getCodProceso().getCodProceso() )) ;
        }
        if( !Utiles.nullToBlank(  procedimientoTO.getNumProcedimiento() ).equals("")){
             criteria.add( Restrictions.eq("numProcedimiento",  procedimientoTO.getNumProcedimiento() ));
        }
        return getHibernateTemplate().findByCriteria(criteria);
    }

   
}
